JSONコンパイルデータベース

JSONコンパイルデータベースファイルを使用して同期を実行することができます。JSONは、Clangコンパイラで使用されているデータベース形式です。コンパイルデータべースは、各翻訳単位をコンパイルするのに必要な、作業ディレクトリ、コンパイルコマンド、インクルードパスを含んでいます。

単一のJSONコンパイルデータベースのエントリは、以下の形式で構成されています。

"directory": "/home/steve/Temp",
"command": "g++ -std=c++11 -I . enum.cpp",
"file": "/home/steve/Temp/enum.cpp"
詳しくは、http://clang.llvm.org/docs/JSONCompilationDatabase.htmlを参照してください。

Clang,、CMake(バージョン2.8.5以降)、Ninja(1.2 以降)を含む様々なビルドシステムがJSONコンパイルデータベースの生成をサポートしています。本マニュアルでは、すべてのビルドシステムによるデータベースの生成をカバーしていませんが、CMakeに関しては、ビルドに以下のフラグを追加するだけです。

 cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

お使いのビルドシステムがこの生成方法をサポートしていない場合でも、コンパイルプロセスをインターセプトし、対応するコンパイルデータベースを生成する多くのツールがあります。著名なものとしては、Bear1が挙げられます。Bearの使用法はシンプルです。

bear BUILD_COMMAND により、compile_commands.jsonファイルが使用中のディレクトリに作成されます。